import java.util.*;
public class Mylist {
    public static void main(String [] args) {
        //选用合适的构造方法，用你学号前后各两名同学的学号创建四个结点
        Node<String> node1 =new Node<String>("20165233",null);
        Node<String> node2 =new Node<String>("20165234",null);
        Node<String> node3 =new Node<String>("20165236",null);
        Node<String> node4 =new Node<String>("20165237",null);

        //把上面四个节点连成一个没有头结点的单链表
        node1.next=node2;
        node2.next=node3;
        node3.next=node4;
        node4.next=node1;

        //遍历单链表，打印每个结点的
        Node<String> node =node1 ;
        System.out.println("打印插入前的链表数据");
        for (int i=0;i<4;i++) {
            System.out.println(node.data.toString());
            node = node.next;
        }
        //把你自己插入到合适的位置（学号升序）
        //遍历单链表，打印每个结点的
        System.out.println("打印插入后的链表数据");
        node=node1;
        Node<String> s=new Node<String>("20165235",null);
        for(int i=0;i<5;i++){
            System.out.println(node.data.toString());
            node = node.next;
           if(node==node2){
               node2.next=s;
               s.next=node3;
           }
        }
        //从链表中删除自己
        node=node1;
        for(int i=0;i<4;i++){
            node = node.next;
            if(node==s){
                s=null;
                node2.next=node3;
                node3.next=node4;
            }
        }
       node =node1 ;
        System.out.println("打印删除后的链表数据");
        for (int i=0;i<4;i++) {
            System.out.println(node.data.toString());
            node = node.next;
        }

    }
}


class Node<String>                             //单链表结点类，T指定结点的元素类型
{
    public String data;                               //数据域，存储数据元素
    public Node<String> next;                         //地址域，引用后继结点

    public Node(String data, Node<String> next)            //构造结点，data指定数据元素，next指定后继结点
    {
        this.data = data;                        //T对象引用赋值
        this.next = next;                        //Node<T>对象引用赋值
    }
    public Node()
    {
        this(null, null);
    }
    @Override
    public java.lang.String toString()                     //返回结点数据域的描述字符串
    {
        return this.data.toString();
    }
}
